---
title: "Модуль multitenancy-manager"
search: multitenancy
description: Мультитенантность и проекты в Kubernetes. Модуль multitenancy-manager Deckhouse позволяет создавать проекты для различных команд разработки с возможностью последующего развертывания в них приложений.
---
## Описание

Модуль позволяет создавать проекты в кластере Kubernetes. **Проект** — это изолированное окружение, в котором можно развернуть приложения.

## Для чего это нужно?

Стандартный ресурс `Namespace`, который используется для логического разделения ресурсов в Kubernetes, не продостввляет необходимых функций, поэтому не является изолированным окружением:
* [Потребление ресурсов подами](https://kubernetes.io/docs/concepts/policy/resource-quotas/) по умолчанию не ограничено;
* [Сетевое взаимодействие](https://kubernetes.io/docs/concepts/services-networking/network-policies/) с другими подами по умолчанию работает из любой точки кластера;
* Неограниченный доступ к ресурсам узла: адресное пространство, сетевое пространство, смонтированные директории хоста.

Возможности настройки пространств имен `Namespace` не полностью соответствуют современным требованиям к разработке. По умолчанию для `Namespace` не включены следующие функции:
* Сборка логов;
* Аудит;
* Сканирование уязвимостей.

Функционал проектов позволяет решить эти проблемы.

## Преимущества модуля

Для администраторов платформы:
* **Единообразие**: Администраторы могут создавать проекты, используя один и тот же шаблон, что обеспечивает единообразие и упрощает управление.
* **Безопасность**: Проекты обеспечивают изоляцию ресурсов и политик доступа между различными проектами, что поддерживает безопасное многотенантное окружение.
* **Потребление ресурсов**: Администраторы могут легко устанавливать квоты на ресурсы и ограничения для каждого проекта, предотвращая избыточное использование ресурсов.

Для пользователей платформы:
* **Изоляция**: Каждый проект обеспечивает изолированное окружение, где разработчики могут развертывать и тестировать свои приложения без влияния на другие проекты.
* **Быстрый старт**: Разработчики могут запрашивать у администраторов проекты, созданные по готовым шаблоны, что позволяет быстро начать разработку нового приложения.

## Внутренняя логика работы

Для создания проектов используются следующие [Custom Resource'ы](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/):
* [ProjectTemplate](cr.html#projecttemplate) — ресурс, который описывает шаблон проекта. При помощи него задается список ресурсов, которые будут созданы в проекте, а также схема параметров, которые можно передать при создании проекта;
* [Project](cr.html#project) — ресурс, который описывает конкретный проект.

При создании ресурса [Project](cr.html#project) из определенного [ProjectTemplate](cr.html#projecttemplate) происходит следующее:
1. Переданные [параметры](cr.html#project-v1alpha2-spec-parameters) валидируются по OpenAPI-спецификации (параметр [openAPI](cr.html#projecttemplate-v1alpha1-spec-parametersschema) ресурса [ProjectTemplate](cr.html#projecttemplate));
1. Выполняется рендеринг [шаблона для ресурсов](cr.html#projecttype-v1alpha1-spec-resourcestemplate) с помощью [Helm](https://helm.sh/docs/). Значения для рендеринга берутся из параметра [parameters](cr.html#project-v1alpha2-spec-parameters) ресурса [Project](cr.html#project);
1. Cоздается `Namespace` с именем, которое совпадает c именем [Project](cr.html#project);
1. По очереди создаются все ресурсы, описанные в шаблоне.

> **Внимание!** При изменении шаблона проекта, все созданные проекты будут обновлены в соответствии с новым шаблоном.
